package com.tanhua.config.template;

import cn.hutool.core.date.DateUtil;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.tanhua.config.properties.OssProperties;

import java.io.InputStream;
import java.util.Date;
import java.util.UUID;

public class OssTemplate {

    private OssProperties ossProperties;

    public OssTemplate(OssProperties ossProperties) {
        this.ossProperties = ossProperties;
    }

    public String uploadOss(InputStream inputStream, String picName) {
        //获取文件后缀  a.b.c.jpg
        String extName = picName.substring(picName.lastIndexOf("."));
        //创建文件名
        String fileName = UUID.randomUUID().toString();
        //创建文件存储路径  yyyy/MM/dd/HH/
        String path = DateUtil.format(new Date(), "yyyy/MM/dd/HH/");

        // 填写Object完整路径，例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        String objectName = path + fileName + extName;

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(
                ossProperties.getEndpoint(),
                ossProperties.getAccessKeyId(),
                ossProperties.getAccessKeySecret());

        // 创建PutObject请求。
        ossClient.putObject(ossProperties.getBucketName(), objectName, inputStream);
        ossClient.shutdown();

        //上传成功后，需要返回图片的访问地址
        String picUrl = ossProperties.getUrl() + objectName;
        return picUrl;
    }
}
